package kawa.co.jp;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.RequestToken;

public class TwitterSignin extends HttpServlet{

	private static String consumerKey;
	private static String consumerSecret;

	public void init(ServletConfig config)
	throws ServletException
	{
		super.init(config);

		// web.xmlで設定したコンシューマーのキー＆シークレットを取得
		consumerKey = config.getInitParameter("consumerKey").trim();
		consumerSecret = config.getInitParameter("consumerSecret").trim();
	}

	public void doGet(HttpServletRequest req, HttpServletResponse res)
	throws ServletException, IOException
	{
		Twitter twitter = new TwitterFactory().getInstance();
		twitter.setOAuthConsumer(consumerKey, consumerSecret);
		req.getSession().setAttribute("twitter", twitter);

		try
		{
			// ※以下のコールバックURLは事前にTwitterで登録しておく必要がある
			String callbackURL = "http://pirotwi.appspot.com/TwitterCallback";
			//callbackURL = "http://pirotwi.appspot.com/TwitterCallback";

			// コールバックURLをリクエストトークンにセット
			RequestToken reqToken = twitter.getOAuthRequestToken(callbackURL);
			req.getSession().setAttribute("requestToken", reqToken);

			// 承認ページにリダイレクト
			res.sendRedirect(reqToken.getAuthenticationURL());
		}
		catch (TwitterException e)
		{
			throw new ServletException(e);
		}
	}
}
